#if !defined(APP_DEVICE_H)
#define APP_DEVICE_H

#include "app_buffer.h"
#include <pthread.h>

// 设备结构体
typedef struct
{
    char *filename; // 文件名   =》 接收到的下游设备的数据/要发送给下游设备的数据
    int fd; // 文件描述符
    Buffer *up_buffer; // 上行缓冲区
    Buffer *down_buffer; // 下行缓冲区
    pthread_t read_thread; // 读线程的标识
    int is_running; // 读线程是否在运行的标识
    long last_write_time; // 上次写数据的时间
    // 读后处理：对读取到的数据进行处理的函数（如：将蓝牙数据转换为字符数组消息）
    int (*post_read)(char *data, int len);
    // 写前处理：对要写入到设备的数据进行处理的函数（如：将字符数组消息转换为蓝牙数据）
    int (*pre_write)(char *data, int len);
} Device;

/**
 * 初始化
 */
Device *app_device_init(char *filename);

/**
 * 启动设备
 */
int app_device_start();

/**
 * 销毁设备
 */
void app_device_destroy();

#endif // APP_DEVICE_H
